package com.xqboss.apps.dto.synthesis;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.xqboss.apps.domain.member.SysUserNft;
import com.xqboss.apps.domain.nft.NftNumber;
import com.xqboss.apps.enums.synthesis.SynthesisTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

@Data
@ApiModel(value = "合成活动-方案配置-消耗详情", description = "出入参数")
public class SynthesisPlanConsumeDto implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "消耗id")
    private Long consumeId;

    @ApiModelProperty(value = "分组编号id")
    private Long groupId;

    @NotNull(message = "材料类型不可为空")
    @Min(value = 1, message = "材料类型格式不合法")
    @ApiModelProperty(value = "材料类型[1藏品，2装备，3箱子，4材料]")
    private SynthesisTypeEnum type;

    @ApiModelProperty(value = "配置名称")
    private String name;

    @ApiModelProperty(value = "配置图片")
    private String imgUrl;

    @ApiModelProperty(value = "关联id")
    private Long thirdId;

    @ApiModelProperty(value = "所需数量")
    @Max(value = 99999, message = "所需数量不合法")
    @Min(value = 1, message = "所需数量不合法")
    private Integer num;

    @Deprecated
    @ApiModelProperty(value = "装备-耐久阈值")
    private BigDecimal durableThreshold;

    @Deprecated
    @ApiModelProperty(value = "装备-破损阈值")
    private BigDecimal breakageThreshold;

    @Deprecated
    @ApiModelProperty(value = "装备-等级阈值")
    private Integer levelThreshold;

    @ApiModelProperty(value = "最小耐久值")
    private BigDecimal minDurable;

    @ApiModelProperty(value = "最大耐久值")
    private BigDecimal maxDurable;

    @ApiModelProperty(value = "最小破损值")
    private BigDecimal minBreakage;

    @ApiModelProperty(value = "最大破损值")
    private BigDecimal maxBreakage;

    @ApiModelProperty(value = "最小等级值")
    private Integer minLevel;

    @ApiModelProperty(value = "最大等级值")
    private Integer maxLevel;

    @ApiModelProperty(value = "用户持有数量")
    private Integer userNum;

    @ApiModelProperty(value = "状态[1:展示;2:停止;3:隐藏]")
    private Integer status;


    ///////////////以下字段仅给APP一键投入时使用////////////////
    @ApiModelProperty("是否满足")
    private Boolean satisfy;

    @ApiModelProperty("投入的装备/藏品列表")
    private List<Long> investmentNftList;

    @ApiModelProperty("投入数量")
    private Integer investmentNum;


    ///////////////////////以下字段内部业务使用//////////////////////////////
    @ApiModelProperty("销毁的用户藏品列表")
    private List<SysUserNft> burnUserNfts;
}
